//
//  XGTabBarViewController.swift
//  WeIBo
//
//  Created by 苏文潇 on 2017/3/4.
//  Copyright © 2017年 苏文潇. All rights reserved.
//

import UIKit

class XGTabBarViewController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let XgTabBar = XGTabBar()
//        使用kvc给只读属性进行赋值
        setValue(XgTabBar, forKey: "tabBar")
        
//        设置代理(三步走： 设置代理，遵守协议，实现方法)
        XgTabBar.xgDelegate = self
        
//        如果使用的闭包时含有self的话，最好是加上[weak self] in，防止循环引用
        XgTabBar.callBack = {[weak self] in
            
//            print(self)
            print("我是闭包调用过来的")
            
        }
        
        
        
        addChildViewController(childController: XGHomeTableViewController(), imageName: "tabbar_home", title: "首页")
        addChildViewController(childController: XGDiscoverViewController(), imageName: "tabbar_discover", title: "发现")
        addChildViewController(childController: XGMessageTableViewController(), imageName: "tabbar_message_center", title: "消息")
        addChildViewController(childController: XGProfileTableViewController(), imageName: "tabbar_profile", title: "我的")
        
    }

    
////    MARK:代理的实现方法(也可以写在extension中，见最下面👇)
//    func didSeletedButton() {
//        print("我是代理调用过来的")
//    }
    
//    重载添加子控制器
    func addChildViewController(childController: UIViewController, imageName: String, title: String)
    {
//        设置图片
        childController.tabBarItem.image = UIImage(named: imageName)?.withRenderingMode(.alwaysOriginal)
        childController.tabBarItem.selectedImage = UIImage(named: imageName + "_selected")?.withRenderingMode(.alwaysOriginal)
        
//        修改tabBar的文字颜色（默认状态和选中状态）
        childController.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.darkGray], for: .normal)
        childController.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.orange], for: .selected)
        
//        设置标题（两种方式，这种是分开写的）
//        childController.navigationItem.title = title
//        childController.tabBarItem.title = title
        childController.title = title
        
//        创建导航控制器
    
        let naVc = XGViewController(rootViewController: childController)
//        添加子控制器
        addChildViewController(naVc)
    }

}



//    MARK: 使用extension可以更好的去实现代理方法
extension XGTabBarViewController: XGTabBarDelegate {
    
    func didSeletedButton() {
        print("我是代理调用过来的")
    }
}





